Extensible markup language (XML) is increasingly becoming the preferred format for transferring data. XML is a tag-based hierarchical language that is extremely rich in terms of the data that it can be used to represent. For example, XML can be used to represent data spanning the spectrum from semi-structured data (such as one would find in a word processing document) to generally structured data (such as that which is contained in a table). XML is well-suited for many types of communication including business-to-business and client-to-server communication.
Given the breadth of data that can be represented by XML, challenges arise when one wishes to provide a user interface to the data that a user can use to manipulate the data or the structure that contains the data. The classical approach to the user interface problem, outside of the XML environment, has been to use different UI technologies for different types of data (e.g. document, tabular data). This approach is clearly not the best when, with XML, it is more likely that a user will encounter and wish to interact with data that is both structured and unstructured. There have been some attempts at solving the problem of enabling a user to manipulate an XML document, but to date, they are extremely inflexible and do not appreciate the full power behind XML and XSL-T, the latter being a transformation that could be used to transform XML into Dynamic HTML or is DHTML. For more information on XML, XSLT and XSD, the reader is referred to the following documents which are the work of, and available from the W3C (World Wide Web consortium): XML Schema Part 0: Primer, Extensible Markup Language (XML) 1.0, XML Schema Part 1: Structures, and XSL Transformations (XSLT) Version 1.0.
Consider, for example, FIG. 1 which illustrates an XML document 100, an XSLT transformation (XSL-T) 102, a resultant DHTML document 104, and an XML schema or XSD file 106. XML document 100 can be represented as a tree-like structure where each node of the tree is a corresponding XML tag. The XML document 100 must conform to an XML schema that is specified by XSD 106. XSL-T 102 is a transformation process that utilizes one or multiple templates to transform the XML document tree into a different type of tree—here a DHTML tree. The DHTML document 104 displays the data that is described in the XML tree. XSL-T is simply a collection of templates that enable the data to be presented, through DHTML in a way that can be defined by a software developer.
Consider, for example, an email message that might have several fields, i.e. “subject”, “to”, and the like. Each of these fields might be represented in XML as to tags. For example, the “subject” field might be represented as an XML tag “subj”. XSL-T creates an engine that attempts to match a current node to various templates, selects one, and may find within that template mode nodes to match. The XSL-T that transforms the XML representation of the email might include a template that matches the “subj” tag. The template would then list the string that is associated with the “subj” tag, but might place the word “Subject:” before the string in the DHTML that is ultimately displayed for the user. This is but a very simple example of the transformation process that can take place using XSL-T. XSL-T can also be used to add information to the information that is represented in an XML document. For example, various headings or other information can be added using XSL-T, with the accompanying data underneath the heading coming from the XML document. Essentially, then, XSL-T provides an extremely robust and flexible way of transforming the data that is described by the XML into a DHTML presentation. One manifestation of XSL-T is that the resultant DHTML structure may bear little resemblance to the corresponding XML tree structure that contains the data that is used by the XSLT to provide the DHTML.
The transition from XML to DHTML is then accomplished through XSL-T. This is generally a one way transition in which data that is described in XML is transformed into a presentation format for the user. Preserving the user experience of being able to interact with the data through its presentation format (e.g. DHTML) is crucial. While the transformation from XML to DHTML is fairly straightforward, there has been no clear transformation that would be the inverse of this transformation (i.e. transforming DHTML to XML) in a manner that is flexible and appreciates the full power of XSL-T. That is, while there are simple solutions to this problem, the robust nature of XSL-T and the differences in the corresponding XML and DHTML trees make it extremely difficult to attempt inverse transformation solutions.
There are solutions that enable a user to enter data in a DHTML document which is then copied back to the XML document. These solutions do not, however, enable a user to change the structure of the XML tree that represents the data. Additionally, there are solutions that are hardcoded solutions that can enable some manipulation of the XML tree given a DHTML modification, but the hardcoded nature of the solutions make them very specific to the data and XML tags with which they are used. For example, one of the XSL-T templates might include a hardcoded solution that allows a user to make structural changes to a table, such as adding a new row. This hardcoded solution is then only usable in connection with the table for which it was specifically defined. If a developer wishes to use the hardcoded solution for a different table, they must physically alter the programmatic solution to specifically apply to their situation. There are solutions which enable authorship of arbitrary XML through user-friendly views, but not through DHTML and XSL-T. Exemplary products include Arbortext's Adept Editor, SoftQuad's XMetal, INRIA's Thot, and FrameMaker's Framemaker for SGML.
Accordingly, this invention arose out of concerns associated with providing user interfaces that enable a user to manipulate a DHTML document with the manipulations being transferred back to the XML tree that represents the data of the DHTML presentation in a flexible, repeatable manner.